
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

public class Muur implements MouseListener {

  private int x;
  private int y;
  int breedte;
  int hoogte;
  boolean geklikt;
  Kamer kamer1;
  Kamer kamer2;
  Grid grid;

  /**
   * Constructor Muur
   * maakt een instantie van Muur
   * @param grid de Grid waarin de Kamer staat
   * @param kamer de Kamer waarbij de muur hoort
   */
  public Muur(Grid grid, Kamer kamer) {
    System.out.println("Muur.Muur");
    this.grid = grid;
    grid.addMouseListener(this);
    this.geklikt = false;
    kamer1 = kamer;
  }

  /**
   * Teken de Muur
   * wordt aangeroepen door Grid--Kamer
   * @see Grid
   * @see Kamer
   * @param x
   * @param y
   * @param breedte
   * @param hoogte
   * @param g
   */
  public void tekenMuur(int x, int y, int breedte, int hoogte, Graphics g) {
    System.out.println("Muur.tekenMuur(" + x + "," + y + "," + breedte + "," + hoogte + ",g);");
    this.x = x;
    this.y = y;
    this.breedte = breedte;
    this.hoogte = hoogte;
    //Kleur met HOR of Vert
    //EINDE Kleur met HOR of Vert
    if (geklikt) {
      g.setColor(Color.BLUE);
    } else {
      //g.setColor(new Color(200,200,0));
      g.setColor(Color.yellow);
    }
    g.fillRect(x, y, breedte, hoogte);
  }

  /**
   * Muis-functie
   * @param e
   */
  public void mouseClicked(MouseEvent e) {
    System.out.println("Muur.mouseClicked");
    //e.paramString();
    System.out.println(e.paramString());
    int xx = e.getX();
    int yy = e.getY();
    int muurnummer = kamer1.getMuurnummer(this);
    String hetCommando = "";
    if (xx >= x && xx <= x + breedte && yy >= y && yy <= y + hoogte) {
      //Oke, het is dus Deze Muur waar op is geklikt
      if (grid.spel.aandebeurt) {
        if (!this.geklikt) {
          try {
            hetCommando = kamer1.rij + "," + kamer1.kolom + "," + muurnummer;
            Communicatie.getInstance().zendCommando(hetCommando);
          } catch (Exception exception1) {
            exception1.printStackTrace();
          }
          muurgeklikt();
          //AHUM: dat je hebt geklikt betekend niet meteen dat de ander aan de beurt is !
          //grid.spel.setAandebeurt(false);
        } else {
          //  javax.swing.JOptionPane.showMessageDialog(null, "Deze muur is al geklitk!");
        }
      } else {
        // javax.swing.JOptionPane.showMessageDialog(null, "Jij bent niet aan de beurt !");
      }
    }
  }

  /**
   * Muis-functie
   * @param e
   */
  public void mouseEntered(MouseEvent e) {
    System.out.println("Muur.mouseEntered");
  }

  /**
   * Muis-functie
   * @param e
   */
  public void mouseExited(MouseEvent e) {
    System.out.println("Muur.mouseExited");
  }

  /**
   * Muis-functie
   * @param e
   */
  public void mousePressed(MouseEvent e) {
    System.out.println("Muur.mousePressed");
  }

  /**
   * Muis-functie
   * @param e
   */
  public void mouseReleased(MouseEvent e) {
    System.out.println("Muur.mouseReleased");
  }

  /**
   *  Wordt aangeroepen als op deze muur is geklikt
   */
  public void muurgeklikt() {
    System.out.println("Muur.muurgeklikt");
    geklikt = true;
    grid.repaint();
    try {
      boolean k1compleet = kamer1.checkCompleet();
      boolean k2compleet = false;
      if (kamer2 != null) {
        k2compleet = kamer2.checkCompleet();
      }
      if (k1compleet || k2compleet) {
        //Mag Nog Een Keer
        //javax.swing.JOptionPane.showMessageDialog(null, "Hokje gemaakt\nSpeler mag nog een keer");
        //Hetzelfde houden:
        grid.spel.setAandebeurt(grid.spel.aandebeurt);
      } else {
        //Beurt Wisselen
        grid.spel.setAandebeurt(!grid.spel.aandebeurt);
      }
    } catch (Exception exp1) {
      exp1.printStackTrace();
    }
  }
}
